home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / dev / gui / DesignerV1_53.lha / Designer / SuperBitMapDemo / SuperBitMapDemo.s < prev    next >
Text File  |  1995-04-28  |  4KB  |  203 lines

  1. ; Compile me to get full executable
  2.  
  3.     include    superbitmapdemowin.i
  4.  
  5. GT_ReplyIMsg             EQU    -78
  6. GT_GetIMsg               EQU    -72
  7. WaitPort                 EQU    -384
  8. ItemAddress              EQU    -144
  9. GT_BeginRefresh          EQU    -90
  10. GT_EndRefresh            EQU    -96
  11. CloseScreen              EQU    -66
  12. DrawBorder               EQU    -108
  13.  
  14. start
  15.  
  16.     jsr     OpenLibs
  17.     tst.l   d0
  18.     bne     NoLibs
  19.     lea     PubScreenName,a1
  20.     jsr     OpenSBWinWindow
  21.     tst.l   d0
  22.     bne     NoWindow
  23.     
  24.     move.l  #0,d0
  25.     movea.l SBWin,a0
  26.     move.b  54(a0),d0          ; get borleft
  27.     ext.w   d0
  28.     move.w  d0,borleft
  29.     move.b  55(a0),d0          ; get bortop
  30.     ext.w   d0
  31.     move.w  d0,bortop
  32.  
  33. WaitHere:
  34.     move.l  SBWin,a1
  35.     move.l  86(a1),a2
  36.     move.l  a2,a0
  37.     move.l  _SysBase,a6
  38.     jsr     WaitPort(a6)
  39. GetMessage:
  40.     move.l  SBWin,a1
  41.     move.l  86(a1),a2
  42.     move.l  a2,a0
  43.     move.l  _GadToolsBase,a6
  44.     jsr     GT_GetIMsg(a6)
  45.     tst.l   d0
  46.     beq     WaitHere
  47.     move.l  d0,a1
  48.     move.l  20(a1),d4
  49.     move.l  #0,d5
  50.     move.w  24(a1),d5          ; code in d5
  51.     
  52.     move.l  _GadToolsBase,a6
  53.     jsr     GT_ReplyIMsg(a6)
  54.  
  55.     
  56.     cmpi.l  #$200,d4           ; Close window
  57.     beq     Done
  58.     
  59.     
  60.     cmpi.l  #$40,d4            ; Palette message, if more than one gadget you must check gadget id
  61.     bne     NotGadgetUp
  62.     move.b  d5,myborderfrontpen
  63.     jmp     GetMessage
  64. NotGadgetUp:
  65.  
  66.  
  67.     cmpi.l  #8,d4              ; mousebuttons
  68.     bne     NotMouseButtons
  69.     cmpi.w  #$E8,d5            ; selectup
  70.     bne     NotSelectUp
  71.     move.w  #0,drawing
  72.     jmp     GetMessage
  73. NotSelectUp:
  74.     cmpi.w  #$68,d5            ; selectdown
  75.     bne     NotSelectDown
  76.     jsr     inbox
  77.     tst.l   d0
  78.     beq     NotSelectDown
  79.     move.w  #1,drawing
  80.     movea.l SBWin,a0
  81.     move.w  14(a0),d0          ; get mousex
  82.     move.w  borleft,d1
  83.     sub.w   d1,d0
  84.     move.w  d0,oldx
  85.     move.w  12(a0),d0          ; get mousey
  86.     move.w  bortop,d1
  87.     sub.w   d1,d0
  88.     move.w  d0,oldy
  89. NotSelectDown:
  90.     jmp     GetMessage
  91. NotMouseButtons:
  92.     
  93.     
  94.     cmpi.l  #$10,d4            ; mousemove
  95.     bne     NotMouseMove
  96.     move.w  drawing,d0
  97.     tst.w   d0
  98.     beq     GetMessage
  99.     jsr     inbox
  100.     tst.l   d0
  101.     beq     NotInBox
  102.     movea.l SBWin,a0
  103.     move.w  14(a0),d0          ; get mousex
  104.     move.w  borleft,d1
  105.     sub.w   d1,d0
  106.     move.w  d0,newx
  107.     move.w  12(a0),d0          ; get mousey
  108.     move.w  bortop,d1
  109.     sub.w   d1,d0
  110.     move.w  d0,newy    
  111.     move.w  oldx,d0
  112.     cmpi.w  #$FFFF,d0
  113.     beq     SkipCallBorder
  114.     movea.l _IntuitionBase,a6
  115.     movea.l SBWin,a0
  116.     movea.l 50(a0),a0
  117.     lea.l   myborder,a1
  118.     move.l  #0,d0
  119.     move.l  #0,d1
  120.     jsr     DrawBorder(a6)
  121. SkipCallBorder:
  122.     move.w  newx,d0
  123.     move.w  d0,oldx
  124.     move.w  newy,d0
  125.     move.w  d0,oldy
  126.     jmp     GetMessage
  127. NotInBox:
  128.     move.w  #$FFFF,oldx
  129.     jmp     GetMessage
  130. NotMouseMove:
  131.     
  132.     
  133.     jmp     GetMessage
  134. Done:
  135.     move.l  SBWin,d0
  136.     tst.l   d0
  137.     beq     NoWindow
  138.     jsr     CloseSBWinWindow
  139. NoWindow:
  140.     jsr     CloseLibs
  141. NoLibs:
  142.     rts
  143.  
  144.  
  145. inbox:
  146.     movea.l SBWin,a0
  147.     move.w  14(a0),d0          ; get mousex
  148.     move.w  borleft,d1
  149.     sub.w   d1,d0
  150.     move.w  d0,newx
  151.     move.w  12(a0),d0          ; get mousey
  152.     move.w  bortop,d1
  153.     sub.w   d1,d0
  154.     move.w  d0,newy    
  155.     
  156.     move.w  newx,d0
  157.     sub.w   #276,d0
  158.     bpl     outbox
  159.     
  160.     move.w  newx,d0
  161.     sub.w   #8,d0
  162.     bmi     outbox
  163.     
  164.     move.w  newy,d0
  165.     sub.w   #146,d0
  166.     bpl     outbox
  167.     
  168.     move.w  newy,d0
  169.     sub.w   #39,d0
  170.     bmi     outbox
  171.     
  172.     move.l  #1,d0
  173. inboxdone:
  174.     rts
  175. outbox:
  176.     move.l  #0,d0
  177.     jmp     inboxdone
  178.  
  179. myborder:
  180.     dc.w    0,0
  181. myborderfrontpen:
  182.     dc.b    1,0,1,2
  183.     dc.l    oldx
  184.     dc.l    0
  185. oldx:
  186.     dc.w    65535
  187. oldy:
  188.     dc.w    65535
  189. newx:
  190.     dc.w    0
  191. newy:
  192.     dc.w    0
  193. bortop:
  194.     dc.w    0
  195. borleft     
  196.     dc.w    0
  197. drawing:
  198.     dc.w    0
  199. PubScreenName:
  200.     dc.b    'DesignerDemoPubScreen',0
  201.  
  202.     end
  203.